go 闭包函数
闭包函数(Closure)是指一个函数值(函数对象)捕获并绑定了其所在的词法环境(包括函数内部定义的变量)的函数。换句话说,闭包函数可以访问并操作其外部函数作用域中的变量,即使外部函数已经执行完毕
- 闭包函数可以访问并修改其外部函数作用域中的变量。这是因为闭包函数在创建时会捕获(Capture)其外部函数作用域中的变量的引用,而不是简单地复制变量的值。因此,即使外部函数已经返回,闭包函数仍然可以访问和修改这些变量。
- 闭包函数可以作为值传递、存储和调用。我们可以将闭包函数赋值给变量,将其作为参数传递给其他函数,或者将其作为返回值返回。
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
add := adder()
fmt.Println(add(1)) // 输出:1
fmt.Println(add(2)) // 输出:3
fmt.Println(add(3)) // 输出:6
}